Алгебраїчне додавання у зворотному та в доповняльному кодах. Модифіковані коди.
При складанні двох чисел, представлених в зворотному або додатковому коді, їх знакові розряди складаються аналогічно цифровим, причому можливе перенесення одиниці із старшого цифрового розряду в знаковий. Якщо обидва операнди представлені в прямому коді і мають однакові знаки, то над такими операндами виконується процедура складання і результату привласнюється знак початкових операндів.
Розглянемо приклади:
1) 210 + 410 = 610 2) -210 - 410 = -610
0. 0010 а) 1. 1110 б) 1. 1101
+ 0. 0100 + 1. 1100 + 1. 1011
0. 0110 = 610 1 1. 1010 = -610 1 1. 1000
+1 коррекция
1. 1001 = -610
У другому прикладі обидва негативних доданків представлені або в додатковому коді (а), або в зворотному коді (б). У першому випадку результат отриманий в додатковому коді, а в другому, після корекції, - в зворотному. Якщо ж операнди мають різні знаки, то повинна виконуватися процедура віднімання. Але, як вже наголошувалося, процедуру віднімання замінюють процедурою складання, негативний операнд (від'ємник) представляють в зворотному або додатковому коді, а позитивний операнд - в прямому коді.
Наприклад:
1) 410 - 210 = 210
а) 0. 0100 б) 0. 0100
+ 1. 1110 + 1. 1101
1 0. 0010 = 210 1 0. 0001
+1 коррекция
0. 0010 = 210
2) 410 - 410 = 0
а) 0. 0100 б) 0. 0100
+ 1. 1100 + 1. 1011
1 0. 0000 = 010 1. 1111
+1 коррекция
1 0. 0000 = 010
3) 210 - 410 = -210
а) 0. 0010 б) 0. 0010
+ 1. 1100 + 1. 1011
1. 1110 = -210 1. 1101 = -210 коррекции нет.
У прикладах 1а) і 2а) одиниця, що виходить за розрядну сітку, не враховується ("втрачається").
Як видно з прикладів процедура складання, алгебри, з додатковими кодами простіше, ніж із зворотними кодами, оскільки в останньому випадку при виникненні одиниці перенесення за межі розрядної сітки, виділеної для числа у форматі з фіксованою комою, доводиться коректувати результат за допомогою додаткової процедури збільшення одиниці до результату. Нульовий результат виходить або в прямому коді чи ж в зворотному, що також вимагає корекції результату. Тому в даний час на практиці для представлення негативних операндів використовується в основному додатковий код. Таким чином, перед виконанням самої процедури складання, алгебри, в додатковому коді потрібно проаналізувати знаки доданків. Якщо вони різні, то виконується складання (фактично віднімання), алгебри, без перевірки на переповнювання результату, оскільки його в цьому випадку просто не може бути. Але контролюється щоб в результаті не з'явився заборонений негативний нуль. Якщо ж у початкових операндів знаки однакові, то такий же знак заздалегідь привласнюється результату і виконується саме складання. Якщо знак остаточного результату не співпадає із заздалегідь привласненим знаком, то це є ознакою переповнювання і отже, неправильного результату. Ще раз підкреслимо, що результат складання, алгебри операндів представлених в зворотному і додатковому кодах виходить також в зворотному і додатковому коді відповідно.
Модифікований прямій, зворотний і додатковий код
Ці коди відрізняються від звичайних ...